<?php

/**
 * 控制器基类
 *
 * @package core
 */
class Control {
    /**
     * 控制器构造函数
     *
     * 当子类实现自己的控制器构造函数时，必须在构造函数体内第一行调用： parent::__construct();
     */
    function __construct() {}

    /**
     * 控制器构造函数
     *
     * 当子类实现自己的控制器析构函数时，必须在析构函数体内最后一行调用： parent::__destruct();
     */
    function __destruct() {}

    /**
     * 错误异常抛出
     * @param string msg
     */
    function __control_exit($msg) {
	trigger_error($msg, E_USER_ERROR);
    }

    //控制器默认事件
    function index() {}

    //错误时返回errno，result false
    protected function out_error($errno = 101) {
	GLOBAL $__core_env;
        
	$__out = &$__core_env['out'];
	$__out["result"] = false;
	$__out["errno"] = $errno;
    }

    //输出正确数据
    protected function out_result($ret = array()) {
	GLOBAL $__core_env;
        
	$__out = &$__core_env['out'];
	$__out["errno"] = 0;
	if ($ret || is_array($ret)) {
	    $__out["result"] = &$ret;
	} else {
	    $__out["result"] = true;
	}
    }

    protected function stripslashes_deep($value) {
	if (get_magic_quotes_gpc()) {
	    $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
	    return $value;
	} else {
	    return $value;
	}
    }

    //获取UID
    protected static function isauth() {
	$uid = modcall("user", "auth", null);
	if (!$uid) {
	    self::out_error(ERR305);
	    return;
	}
	return $uid;
    }

}